// 基本思路： 容纳的水量是左右两端直线中较低直线的高度 和 两端直线之间的距离所决定的，尽量使较低直线的高度尽可能的高
// 使用两个指针，left指向数组开始位置，right指向数组结束位置，计算left和right所构成的面积，维护更新最大面积值
// 比较left和right的高度值大小，如果left指向的高度低，left右移，如果right指向的直线高度比较低，将right指针左移

function maxArea(arr) {
    let left = 0
    let right = arr.length - 1
    let ans = 0
    while (left < right) {
        let area = Math.min(arr[left], arr[right]) * (right - left)
        ans = Math.max(ans, area)
        if (arr[left] < arr[right]) {
            left += 1
        } else {
            right -= 1
        }
    }
    return ans
}

let arr = [1, 8, 6, 2, 5, 4, 8, 3, 7]
console.log(maxArea(arr));